package response

type ResultRes struct {
	Code int         `json:"code"`
	Data interface{} `json:"data"`
	Msg  string      `json:"msg"`
}

// 请求成功返回体
func NewSuccess(data interface{}) *ResultRes {
	return &ResultRes{Code: 200, Msg: "success", Data: data}
}

// 请求成功返回体
func NewSuccessMsg(data interface{}, msg string) *ResultRes {
	return &ResultRes{Code: 200, Msg: msg, Data: data}
}

// 自定义返回体
func New(result *ResultRes) *ResultRes {
	return result
}

// 请求失败返回体
func NewFailed(code int, msg string) *ResultRes {
	return &ResultRes{Code: code, Msg: msg, Data: nil}
}

// 请求失败返回体
func NewMsgFailed(msg string) *ResultRes {
	return &ResultRes{Code: 500, Msg: msg, Data: nil}
}

// 请求失败返回体
func NewDataFailed(data any) *ResultRes {
	return &ResultRes{Code: 500, Data: data}
}

// 请求失败返回体
func NewRequestFailed() *ResultRes {
	return &ResultRes{Code: 500, Msg: "系统异常，请稍后重试", Data: nil}
}

// 请求失败返回体
func NewParamFailed() *ResultRes {
	return &ResultRes{Code: 402, Msg: "参数异常，请稍后重试", Data: nil}
}

// 未登录返回体
func NewNoLogin(data interface{}) *ResultRes {
	return &ResultRes{Code: 401, Msg: "not login", Data: data}
}

// 重定向认证中心
func NewSsoRedirect(redirect string) *ResultRes {
	return &ResultRes{Code: 302, Msg: "redirect sso login", Data: redirect}
}
